In multilevel signalling systems such as M-level PAM or QAM systems, signals are transmitted having a voltage level representative of the value of a multi-bit signal input to the system. For example, in an 8-level PAM or QAM system, one of the voltage levels will be transmitted with each voltage level being indicative of the value of an input three bit digital signal.
Because of the high likelihood of an error at the receiving station in recognizing the exact transmitted level, coding is often used to ensure accurate recognition. Such coding can be limited to merely identifying any transmitted error. However, it is generally preferable that the error coding be used in a system which identifies an error and chooses the correct level after this error has been detected. Such systems are known as error correction coding systems.
In the past, error correction coding has been accomplished by encoding the full data stream being transmitted. Although this generally provides for satisfactory level recognition, it requires a great deal of coding. This, of course, greatly effects the practical bit rate of transmission.
From studying typical errors made in transmitting uncoded multilevel signals, it has been found that errors between adjacent voltage levels are by far the dominant types of errors. This can be seen by considering that the M levels are spaced by .DELTA. volts, and that an adjacent level error is made for channel noise greater than .DELTA./2 volts. On the other hand, for a non-adjacent error, channel noise voltage greater than (3/2).DELTA. must occur. The ratio of the two noise voltages is thus seen to be 3, or a power ratio of 9, which corresponds to approximately 9.5 dB. Thus, the probability of a non-adjacent error corresponds to a signal-to-noise ratio which is 9.5 dB higher than the probability of an adjacent level error. Therefore, the probability of symbol error is almost totally determined and dominated by the adjacent level errors.
From the fact that adjacent level errors are so dominant for the M/QAM systems (M&gt;2), it can be very wasteful to use any of the error correction capability of coding to correct against non-adjacent level errors.